<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision : 1330988 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<modulesynopsis metafile="mod_expires.xml.meta">

<name>mod_expires</name>
<description>G&eacute;n&eacute;ration des en-t&ecirc;tes HTTP <code>Expires</code> et
<code>Cache-Control</code> en fonction de crit&egrave;res sp&eacute;cifi&eacute;s par
l'utilisateur</description>
<status>Extension</status>
<sourcefile>mod_expires.c</sourcefile>
<identifier>expires_module</identifier>

<summary>
    <p>Ce module permet de contr&ocirc;ler la d&eacute;finition de l'en-t&ecirc;te HTTP
    <code>Expires</code> et la directive <code>max-age</code> de
    l'en-t&ecirc;te HTTP <code>Cache-Control</code> dans les r&eacute;ponses du
    serveur. La date d'expiration peut &ecirc;tre d&eacute;finie soit par rapport &agrave;
    la date de derni&egrave;re modification du fichier source, soit
    par rapport &agrave; l'heure d'acc&egrave;s du client.</p>

    <p>Ces en-t&ecirc;tes HTTP permettent d'informer le client quant &agrave; la
    validit&eacute; et &agrave; la persistence du document. S'il est pr&eacute;sent dans le
    cache, et tant qu'il n'est pas arriv&eacute; &agrave; expiration, le document sera
    servi &agrave; partir de ce dernier, plut&ocirc;t qu'&agrave; partir du document source.
    Apr&egrave;s expiration, la copie du document dans le cache sera consid&eacute;r&eacute;e
    comme "expir&eacute;e" et donc invalide, et une nouvelle copie devra &ecirc;tre
    obtenue &agrave; partir du document source.</p>

    <p>Pour modifier les directives de contr&ocirc;le du cache autres
    que <code>max-age</code> (voir la <a
    href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">RFC
    2616 section 14.9</a>), vous pouvez utiliser la directive <directive
    module="mod_headers">Header</directive>.</p>

    <p>Lorsque l'en-t&ecirc;te <code>Expires</code> est d&eacute;j&agrave; pr&eacute;sent dans la
    r&eacute;ponse g&eacute;n&eacute;r&eacute;e par le serveur, par exemple s'il a &eacute;t&eacute; cr&eacute;&eacute; par un
    script CGI ou un serveur original via un serveur mandataire, ce
    module n'ajoute aucun en-t&ecirc;te <code>Expires</code> ou
    <code>Cache-Control</code>.</p>
</summary>

<section id="AltSyn"><title>Autre syntaxe de d&eacute;finition de
l'intervalle</title>
    <p>Pour une syntaxe plus lisible, on peut aussi utiliser les
    directives <directive
    module="mod_expires">ExpiresDefault</directive> et <directive
    module="mod_expires">ExpiresByType</directive> comme suit :</p>

    <highlight language="config">
ExpiresDefault "<var>base</var>  [plus <var>num</var> <var>type</var>] [<var>num</var> <var>type</var>] ..."
ExpiresByType type/encoding "<var>base</var>  [plus <var>num</var> <var>type</var>] [<var>num</var> <var>type</var>] ..."
    </highlight>

    <p>o&ugrave; <var>base</var> peut &ecirc;tre :</p>

    <ul>
      <li><code>access</code></li>

      <li><code>now</code> (&eacute;quivalent &agrave;
      '<code>access</code>')</li>

      <li><code>modification</code></li>
    </ul>

    <p>Le mot-cl&eacute; <code>plus</code> est optionnel. <var>num</var> doit
    correspondre &agrave; une valeur enti&egrave;re [compatible avec
    <code>atoi()</code>], et <var>type</var> peut &ecirc;tre choisi parmi :</p>

    <ul>
      <li><code>years</code></li>
      <li><code>months</code></li>
      <li><code>weeks</code></li>
      <li><code>days</code></li>
      <li><code>hours</code></li>
      <li><code>minutes</code></li>
      <li><code>seconds</code></li>
    </ul>

    <p>Par exemple, pour faire expirer par d&eacute;faut les documents 1 mois
    apr&egrave;s leur acc&egrave;s, on peut utiliser une des directives suivantes :</p>
    <highlight language="config">
ExpiresDefault "access plus 1 month"
ExpiresDefault "access plus 4 weeks"
ExpiresDefault "access plus 30 days"
    </highlight>


    <p>La date d'expiration peut &ecirc;tre d&eacute;finie plus pr&eacute;cis&eacute;ment en
    ajoutant plusieurs clauses '<var>num</var> <var>type</var>' :</p>

    <highlight language="config">
ExpiresByType text/html "access plus 1 month 15 days 2 hours"
ExpiresByType image/gif "modification plus 5 hours 3 minutes"
    </highlight>

    <p>Notez que si vous utilisez une configuration bas&eacute;e sur la date de
    modification, l'en-t&ecirc;te Expires ne sera pas ajout&eacute; &agrave; un contenu qui
    ne provient pas directement d'un fichier sur disque ; et ceci tout
    simplement parce que ce type de contenu ne poss&egrave;de pas de date de
    modification.</p>
</section>

<directivesynopsis>
<name>ExpiresActive</name>
<description>Active la g&eacute;n&eacute;ration d'en-t&ecirc;tes
<code>Expires</code></description>
<syntax>ExpiresActive On|Off</syntax>
<default>ExpiresActive Off</default>
<contextlist><context>server config</context>
<context>virtual host</context><context>directory</context>
<context>.htaccess</context></contextlist>
<override>Indexes</override>

<usage>
    <p>Cette directive permet d'activer ou de d&eacute;sactiver la g&eacute;n&eacute;ration
    des en-t&ecirc;tes <code>Expires</code> et <code>Cache-Control</code> pour
    les documents concern&eacute;s ; en d'autres termes, si cette directive se
    trouve dans un fichier <code>.htaccess</code>, par exemple, elle ne
    s'applique qu'aux documents g&eacute;n&eacute;r&eacute;s &agrave; partir du r&eacute;pertoire
    consid&eacute;r&eacute;. Si elle est d&eacute;finie &agrave; <code>Off</code>, les en-t&ecirc;tes ne
    seront g&eacute;n&eacute;r&eacute;s pour aucun document du domaine consid&eacute;r&eacute; (sauf
    surcharge de la configuration &agrave; un niveau inf&eacute;rieur, comme un
    fichier <code>.htaccess</code> qui l'emporterait sur le fichier de
    configuration du serveur). Si elle est d&eacute;finie &agrave; <code>On</code>,
    les en-t&ecirc;tes seront ajout&eacute;s aux documents servis en fonction des
    crit&egrave;res d&eacute;finis par les directives <directive
    module="mod_expires">ExpiresByType</directive> et <directive
    module="mod_expires">ExpiresDefault</directive> (<em>voir plus
    loin</em>).</p>

    <p>Notez que cette directive ne permet pas de garantir qu'un en-t&ecirc;te
    <code>Expires</code> ou <code>Cache-Control</code> sera g&eacute;n&eacute;r&eacute;. Si
    les crit&egrave;res ne sont pas respect&eacute;s, aucun en-t&ecirc;te ne sera g&eacute;n&eacute;r&eacute;, et
    la directive produira le m&ecirc;me effet que si elle n'avait pas &eacute;t&eacute;
    d&eacute;finie.</p>
 </usage>
</directivesynopsis>

<directivesynopsis>
<name>ExpiresByType</name>
<description>D&eacute;finition de la valeur de l'en-t&ecirc;te <code>Expires</code>
en fonction du type MIME</description>
<syntax>ExpiresByType <var>type MIME</var>
<var>&lt;code&gt;secondes</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>Indexes</override>

<usage>
    <p>Cette directive permet de d&eacute;finir la valeur de l'en-t&ecirc;te
    <code>Expires</code> et de la directive <code>max-age</code> de
    l'en-t&ecirc;te <code>Cache-Control</code> g&eacute;n&eacute;r&eacute;s pour les documents du
    type MIME sp&eacute;cifi&eacute; (par exemple, <code>text/html</code>). Le second
    argument d&eacute;finit le nombre de secondes qui seront ajout&eacute;es &agrave; un
    temps de base pour calculer la date d'expiration.
    <code>Cache-Control: max-age</code> se calcule en soustrayant la
    date de la requ&ecirc;te de la date d'expiration et s'exprime en
    secondes.</p>

    <p>Le champ <code><var>&lt;code&gt;</var></code> permet de sp&eacute;cifier
    quel temps doit &ecirc;tre utilis&eacute; comme temps de base; <code>M</code>
    signifie que c'est la date
    de derni&egrave;re modification du fichier qui doit &ecirc;tre utilis&eacute;e comme
    temps de base, alors que <code>A</code> signifie que c'est le moment
    o&ugrave; le client a acc&eacute;d&eacute; au document qui doit &ecirc;tre utilis&eacute; comme temps
    de base.</p>

    <p>La diff&eacute;rence d'effet est subtile. Si on utilise <code>M</code>,
    toutes les copies existantes du document dans tous les caches
    expireront au m&ecirc;me moment, ce qui peut convenir par exemple pour une
    notice hebdomadaire qui correspond toujours &agrave; la m&ecirc;me URL. Si on
    utilise <code>A</code>, la date d'expiration sera diff&eacute;rente pour
    chaque client, ce qui peut convenir pour des fichiers d'images qui
    ne changent pas tr&egrave;s souvent, et en particulier pour un ensemble de
    documents en relation qui se r&eacute;f&egrave;rent tous aux m&ecirc;mes images (ces
    images sont alors acc&eacute;d&eacute;es de mani&egrave;re r&eacute;p&eacute;titive dans un intervalle
    de temps assez court).</p>

    <example><title>Exemple :</title>
      <highlight language="config">
# active la g&eacute;n&eacute;ration des en-t&ecirc;tes Expires
ExpiresActive On
# les images GIF expirent au bout d'un mois dans le cache du
# client
ExpiresByType image/gif A2592000
# les documents HTML restent valables une semaine apr&egrave;s leur date
# de derni&egrave;re modification
ExpiresByType text/html M604800
      </highlight>
    </example>

    <p>Notez que cette directive ne produit d'effet que si
    <code>ExpiresActive On</code> a &eacute;t&eacute; sp&eacute;cifi&eacute;. Elle l'emporte, mais
    <em>seulement</em> pour le type MIME sp&eacute;cifi&eacute;, sur toute date
    d'expiration d&eacute;finie par la directive <directive
    module="mod_expires">ExpiresDefault</directive>.</p>

    <p>Vous pouvez aussi d&eacute;finir le mode de calcul de la date
    d'expiration en utilisant une <a href="#AltSyn">syntaxe
    alternative</a>, comme d&eacute;crit plus haut dans ce document.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>ExpiresDefault</name>
<description>Mode de calcul par d&eacute;faut de la date
d'expiration</description>
<syntax>ExpiresDefault <var>&lt;code&gt;secondes</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>Indexes</override>

<usage>
    <p>Cette directive permet de d&eacute;finir le mode de calcul par d&eacute;faut de
    la date d'expiration pour tous les documents du domaine consid&eacute;r&eacute;.
    Elle peut &ecirc;tre annul&eacute;e pour certains types de documents par la
    directive <directive
    module="mod_expires">ExpiresByType</directive>. Voir la description
    de cette derni&egrave;re directive pour plus de d&eacute;tails &agrave; propos de la
    syntaxe de l'argument, ainsi que la description de la <a
    href="#AltSyn">syntaxe alternative</a>.</p>
</usage>
</directivesynopsis>
</modulesynopsis>

